package appcontroltareas;

import java.util.ArrayList;

public class Tarea {
	private String numero;	
	protected Usuario responsable;
	protected String fechaVencimiento;
	protected String comentario;
	protected String estado;
	
	private boolean confirmado;
	
	private Usuario usuarioCreacion;
	private String fechaCreacion;
	private Usuario usuarioModificacion;
	private String fechaModificacion;
	
	public static final String ESTADO_NO_INICIADO = "No iniciado";
	public static final String ESTADO_EN_CURSO = "En curso";
	public static final String ESTADO_COMPLETADO = "Completado";
	public static final String ESTADO_DESCARTADO = "Descartado";
	
	private ArrayList<Notificacion> notificaciones;
	
	public Tarea(String numero, Usuario responsable, String fechaVencimiento, String comentario){
		this.numero = numero;
		this.responsable = responsable;
		this.fechaVencimiento = fechaVencimiento;
		this.comentario = comentario;
		
		this.confirmado = false;
		this.estado = "No iniciado";
		this.usuarioModificacion = null;
		this.fechaModificacion = "";	
		
		notificaciones = new ArrayList<Notificacion>();
	}
	
	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public Usuario getResponsable() {
		return responsable;
	}

	public void setResponsable(Usuario responsable) {
		this.responsable = responsable;
	}

	public String getFechaVencimiento() {
		return fechaVencimiento;
	}

	public void setFechaVencimiento(String fechaVencimiento) {
		this.fechaVencimiento = fechaVencimiento;
	}
	
	public String getEstado() {
		return estado;
	}	
	
	public void setEstado(String estado) {
		this.estado = estado;
	}  		

	public boolean isConfirmado() {
		return confirmado;
	}

	public void setConfirmado(boolean confirmado) {
		this.confirmado = confirmado;
	}
	
	public void confirmarTarea(){
		this.confirmado = true;
		this.estado = "En curso";
	}	
	
	public void adicionarUsuarioNotificacion(String modulo, Usuario usuario){
		Notificacion notificacion = new Notificacion(modulo, this.numero, usuario);
		notificaciones.add(notificacion);
	}	
	
    public Notificacion buscarUsuarioNotificacion(String modulo, String dni) {
        for( Notificacion notificacion  : notificaciones)
            if (notificacion.getModulo().equals(modulo) && notificacion.getUsuario().getDni().equals(dni)
            		&& notificacion.getNumero().equals(this.numero))
                return notificacion;
        return null;
    }
    
    public void eliminarUsuarioNotificacion(Notificacion notificacion) {
        	notificaciones.remove(notificacion);
    } 
    
    public int getTotalUsuariosNotificados() {
        return notificaciones.size();
    }
	
}
